css: Privately export a function to get pseudoclass names
authorMatthias Clasen <mclasen@redhat.com>
Sun, 24 Jan 2016 15:56:23 +0000 (10:56 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Sun, 24 Jan 2016 15:59:46 +0000 (10:59 -0500)
This function centralizes the mapping for widget states
to pseudoclass names in one place, for easier maintenance.

gtk/gtkcssselector.c
gtk/gtkcssselectorprivate.h

index 7616493582e41f632c2d19564f24b309bcb456da..b23e1fdc1c2585d66bb025112f6014d54f4e5b19 100644 (file)
@@ -726,11 +726,8 @@ comp_id (const GtkCssSelector *a,
 
 DEFINE_SIMPLE_SELECTOR(id, ID, print_id, match_id, hash_id, comp_id, TRUE, FALSE, FALSE)
 
-/* PSEUDOCLASS FOR STATE */
-
-static void
-print_pseudoclass_state (const GtkCssSelector *selector,
-                         GString              *string)
+const gchar *
+gtk_css_pseudoclass_name (GtkStateFlags state)
 {
   static const char * state_names[] = {
     "active",
@@ -749,18 +746,22 @@ print_pseudoclass_state (const GtkCssSelector *selector,
   };
   guint i;
 
-  g_string_append_c (string, ':');
-
   for (i = 0; i < G_N_ELEMENTS (state_names); i++)
     {
-      if (selector->state.state == (1 << i))
-        {
-          g_string_append (string, state_names[i]);
-          return;
-        }
+      if (state == (1 << i))
+        return state_names[i];
     }
 
-  g_assert_not_reached ();
+  return NULL;
+}
+
+/* PSEUDOCLASS FOR STATE */
+static void
+print_pseudoclass_state (const GtkCssSelector *selector,
+                         GString              *string)
+{
+  g_string_append_c (string, ':');
+  g_string_append (string, gtk_css_pseudoclass_name (selector->state.state));
 }
 
 static gboolean
index e23ae09cc41b1d1575545e9274efca3081acd83c..64eb13d709c1cc045c23305e931592c6bc33cfa1 100644 (file)
@@ -57,6 +57,8 @@ void                       _gtk_css_selector_tree_builder_add   (GtkCssSelectorT
 GtkCssSelectorTree *       _gtk_css_selector_tree_builder_build (GtkCssSelectorTreeBuilder *builder);
 void                       _gtk_css_selector_tree_builder_free  (GtkCssSelectorTreeBuilder *builder);
 
+const char *gtk_css_pseudoclass_name (GtkStateFlags flags);
+
 G_END_DECLS
 
 #endif /* __GTK_CSS_SELECTOR_PRIVATE_H__ */